A storage subsystem can be implemented with multiple (e.g. an array of) physical storage devices. A storage volume, which is a logical unit of data, can be implemented across plural physical storage devices. One reason for implementing a storage volume across plural physical storage devices is to provide redundancy, such as redundancy based on mirroring data (in which data of a first storage device is copied to a second storage device to provide redundancy). Another form of redundancy is parity-based redundancy (in which parity information of data stored in a group of storage devices is kept in another storage device). By providing redundancy, if a physical storage device (or any part of a physical storage device) from the multiple physical storage devices were to fail, then the data stored in the storage subsystem can still be recovered under certain conditions.
With a conventional storage subsystem, it may be difficult to recover from a failure condition in which communication is lost to the entire storage subsystem. Typically, when communication to an entire storage subsystem is lost, a manual process is used to attempt to recover the storage subsystem. Such a manual process of storage subsystem recovery is labor-intensive and time-consuming.